package cn.itcast.nems.studentrecord.service;

import cn.itcast.nems.studentrecord.dao.condition.StudentRecordParams;
import cn.itcast.nems.studentrecord.dao.dataobject.StudentRecordCountDO;
import cn.itcast.nems.studentrecord.dao.dataobject.StudentRecordDO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 学籍统计相关接口
 * </p>
 *
 * @author zhouwei
 * @since 2023/12/20 11:46 AM
 **/
public interface StudentRecordCountService {

    /**
     * 根据班级ID、支付状态或学籍查询缴费情况
     *
     * @param recordParam 查询条件  ： 班级ID、缴费状态和 学籍ID
     * @return 学籍列表
     */
    List<StudentRecordDO> findStudentRecordListByCondition(StudentRecordParams recordParam);
    /**
     * <p>
     * 统计指定班级ID学籍缴费记录（未缴费、部分缴费、欠费总金额和已缴费人数  ）
     * </p>
     *
     * @param  clazzId 班级ID
     * @author zhouwei
     * @since 2023/12/20 1:44 PM
     **/
    StudentRecordCountDO findCountByClazzId(Integer clazzId) ;
    /**
     * <p>
     * 统计缴费情况（定时人数）
     * </p>
     *
     * @param isAll  是否查询全部时间段
     * @param startTime 起始时间
     * @return 学籍列表 , 没有则返回 null
     * @author zhouwei
     * @since 2023/12/26 4:10 PM
     **/
    List<StudentRecordCountDO> findAllClazzEnrolmentCount(Boolean isAll , LocalDateTime startTime ) ;
}
